package com.ruoyi.training.service;

import java.util.List;

import com.ruoyi.system.api.domain.SysUser;
import com.ruoyi.training.domain.Students;
import com.ruoyi.training.dto.MyCertificateInfo;
import com.ruoyi.training.dto.MyGradeInfo;
import com.ruoyi.training.dto.SysUserDto;

/**
 * 学员Service接口
 *
 * @author ruoyi
 * @date 2025-09-16
 */
public interface IStudentsService
{
    /**
     * 查询学员
     *
     * @param studentId 学员主键
     * @return 学员
     */
    public Students selectStudentsByStudentId(String studentId);

    /**
     * 查询学员列表
     *
     * @param students 学员
     * @return 学员集合
     */
    public List<Students> selectStudentsList(Students students);

    /**
     * 新增学员
     *
     * @param students 学员
     * @return 结果
     */
    public int insertStudents(Students students);

    /**
     * 修改学员
     *
     * @param students 学员
     * @return 结果
     */
    public int updateStudents(Students students);

    /**
     * 批量删除学员
     *
     * @param studentIds 需要删除的学员主键集合
     * @return 结果
     */
    public int deleteStudentsByStudentIds(String[] studentIds);

    /**
     * 删除学员信息
     *
     * @param studentId 学员主键
     * @return 结果
     */
    public int deleteStudentsByStudentId(String studentId);

    /**
     * 通过证件号查询学员
     *lqx
     */
    public Students checkUserIdNumber(String idNumber);

    /**
     * 通过证件号查询学员
     *lqx
     */
    public Students checkUserPhoneNumber(String phoneNumber);

    /**
     * 通过ids查询学员信息
     * lqx
     * */
    public List<Students> selectStudentsByIds(List<String> studentIds);

    //通过学员通知表id查询出学员信息
    public List<Students> selectStudentsByStudentNoticeId(String studentNoticeId);

    /**
     * 查询内训用户列表
     * lqx
     */
    public List<SysUserDto> selectUserList(SysUser sysUser);

    /**
     * 新增学员-同步用户
     * lqx
     */
    public int insertStudentsWithUser(Students students);

    /**
     * 修改学员-同步用户
     * lqx
     */
    public int updateStudentsWithUser(Students students);

    /**
     * 删除学员-同步用户
     * lqx
     */
    public int deleteStudentsWithUserByStudentIds(String[] studentIds);

    /**
     * 查询学员成绩
     * lqx
     */
    public List<MyGradeInfo> getStudentGradeInfo(String studentId);

    /**
     * 查询学员证书
     * lqx
     */
    public List<MyCertificateInfo> getStudentCertificateInfo(String studentId);
}
